﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Datos;
using Negocio.clases_tontas;
using Negocio.catalogos;

namespace Negocio.catalogos
{
    public class catalogoBitacora
    {
        ControlAsistenciaEntities _objConexion = new ControlAsistenciaEntities();

        public List<bitacoraClase> obtenerBitocaraXidDistribucion(int _idDistribucion, int _idPeriodo)
        {
            List<bitacoraClase> _objLista = new List<bitacoraClase>();

            try
            {
                foreach (var item in _objConexion.procConsultarBitocaraIDDistribucion(_idDistribucion, _idPeriodo))
                {
                    _objLista.Add(new bitacoraClase(item.idBitacora, new catalogoPeriodo().obtenerPeriodo((int)item.idPeriodo).FirstOrDefault(), item.observacion, (DateTime)item.fecha, new catalogoDistribucion().obtenerDistribucionId((int)item.idDistribucion).FirstOrDefault(), new catalogoHorario().obtenerNroHoraHorarioXDIa((int)item.idPeriodo, (int)item.idDistribucion, (DateTime)item.fecha), item.tipo));
                }
                return _objLista;
            }
            catch (Exception)
            {
                return _objLista;
            }
        }

        public string agregarBitacora(int _idDocente, int _idPeriodo, DateTime _fecha, int _idTipo, int _idDistribucion , string _observacion)
        {
            try
            {
                _objConexion.procAgregarBitocara(_idDocente, _idPeriodo, _fecha, _idTipo, _idDistribucion, _observacion);
                return "Registro de actividad agregada con exito.";
            }
            catch (Exception)
            {

                return "Error al ingresar registro de actividad.";
            }
        }

        public bitacoraClase obtenerBitocaraXidDistribucionAndFecha(int _idDistribucion, DateTime _fecha, int _idPeriodo)
        {
            bitacoraClase _objLista = null;

            try
            {
                var item = _objConexion.procConsultarBitocaraIDDistribucionFecha(_idDistribucion, _idPeriodo, _fecha).FirstOrDefault();

                _objLista = new bitacoraClase(item.idBitacora, new catalogoPeriodo().obtenerPeriodo((int)item.idPeriodo).FirstOrDefault(), item.observacion, (DateTime)item.fecha, new catalogoDistribucion().obtenerDistribucionId((int)item.idDistribucion).FirstOrDefault(), new catalogoHorario().obtenerNroHoraHorarioXDIa((int)item.idPeriodo, (int)item.idDistribucion, (DateTime)item.fecha),item.tipo);
                
                return _objLista;
            }
            catch (Exception)
            {
                return _objLista;
            }
        }

        public List<bitacoraClase> obtenerBitocaraXidDistribucionANDXTipo(int _idDistribucion, int _idPeriodo, int _idTipo)
        {
            List<bitacoraClase> _objLista = new List<bitacoraClase>();

            try
            {
                foreach (var item in _objConexion.procConsultarBitocaraIDDistribucionXTipo(_idDistribucion, _idPeriodo, _idTipo))
                {
                    _objLista.Add(new bitacoraClase(item.idBitacora, (DateTime)item.fecha, new catalogoHorario().obtenerNroHoraHorarioXDIa(_idPeriodo, _idDistribucion, (DateTime)item.fecha), (int)item.idTipo));
                }
                return _objLista;
            }
            catch (Exception)
            {
                return _objLista;
            }
        }


    }
}
